package models

import (
	"ginBolg/models/ctype"
	"gorm.io/gorm"
)

// ArticleModel 文章表
type ArticleModel struct {
	MODEL
	Title         string         `gorm:"size:32" json:"title"`                          // 文章标题
	Abstract      string         `json:"abstract"`                                      // 文章简介
	Content       string         `json:"content"`                                       // 文章内容
	LookCount     int            `json:"look_count"`                                    // 浏览数
	CommentCount  int            `json:"comment_count"`                                 // 评论数
	DiggCount     int            `json:"digg_count"`                                    // 点赞数
	CollectsCount int            `json:"collects_count"`                                // 收藏数
	TagModels     []TagModel     `gorm:"many2many:article_tag_model" json:"tag_models"` // 文章标签
	CommentModels []CommentModel `gorm:"foreignKey:ArticleID" json:"-"`                 // 文章评论列表
	UserModel     UserModel      `gorm:"foreignKey:UserID" json:"-"`                    // 作者
	UserID        uint           `json:"user_id"`                                       //用户id
	Category      string         `gorm:"size:20" json:"category"`                       // 文章分类
	Source        string         `json:"source"`                                        //文章来源
	Link          string         `json:"link"`                                          // 原文连接
	Banner        BannerModel    `gorm:"foreignKey:BannerID" json:"-"`                  // 文章封面
	BannerID      uint           `json:"banner_id"`                                     // 文章封面id
	Nickname      string         `gorm:"size:42" json:"nickname"`                       // 作者昵称
	BannerPath    string         `json:"banner_path"`                                   // 文章封面图片路径
	Tags          ctype.Array    `gorm:"type:string;size:64" json:"tags"`               //文章标签

}

//func (at *ArticleModel) AfterCreate(tx *gorm.DB) (err error) {
//	articleEs := at.GetEsData()
//	es_article_ser.ArticleInsertOne(articleEs)
//	return nil
//}
//func (at *ArticleModel) getEsData() es_models.ArticleEs {
//	tags := []string{}
//	for _, tag := range at.TagModels {
//		tags = append(tags, tag.Title)
//	}
//	articleES := es_models.ArticleEs{
//		Id:            at.ID,
//		Title:         at.Title,
//		Abstract:      at.Abstract,
//		LookCount:     at.LookCount,
//		CommentCount:  at.CommentCount,
//		DiggCount:     at.DiggCount,
//		DiggCount:     at.DiggCount,
//		CollectsCount: at.CollectsCount,
//		Tags:          at.Tags,
//		Category:      at.Category,
//		CoverPath:     at.CoverPath,
//		CreateAt:      at.CreateAt.Format("2006-01-02"),
//	}
//	return articleES
//}

// AfterUpdate 更新的狗钩子函数  这种更新不太好
func (at *ArticleModel) AfterUpdate(tx *gorm.DB) (err error) {
	return nil
}
